284
|
6 Applications and Methods in Biosignal Processing
% Fit one model on the complete data set
modelAll = fitcknn(X,Y,'NumNeighbors',neighbours,...
'DistanceWeight','equal');
[¬,score] = resubPredict(modelAll);
predictedClass = predict(modelAll,X);
confusionMatrix = confusionmat(Y,predictedClass,...
'Order',["K" "A"]);
% write these predictions to the results for now
for i = 1:length(data)
obj.results(i).data = score(i,:);
end
% global Matrix to the log
logindex = 1;
obj.log(logindex).description = "confusionMatrixAll";
obj.log(logindex).data = reshape(confusionMatrix,1,[]);
logindex = logindex + 1;
obj.log(logindex).description = "accuracyAll";
obj.log(logindex).data = sum(diag(confusionMatrix))/...
sum(confusionMatrix,'all');
logindex = logindex + 1;
%cross validation, output of confusion Matrix for each fold
if mode == "standard"
cp = cvpartition(Y,'KFold',KFold);
elseif mode == "skip"
cp = cvpartition(Y(2:2:end),'KFold',KFold);
else
error("Mode not implemented");
end
for i = 1:KFold
% our own cross-validation
if mode == "standard"
trainingIndizes = training(cp,i);
testIndizes = test(cp,i);
elseif mode == "skip"
trainingIndizes = reshape(repmat(training(cp,i),1,2)',...
[],1);
testIndizes = reshape(repmat(test(cp,i),1,2)',[],1);